8 research outputs found

    Parallelisation efficace de larges applications temps-reel

    Get PDF
    We present a parallel compilation method for embedded control applications. The method is fully automatic and scales up, being based on low-complexity heuristics. Unlike classical compilation, it also takes as input non-functional requirements, e.g. real-time or resource limits.The main objective is not optimization per se, but the respect of requirements. To this end, static resource allocation and code generation algorithms perform a safe accounting of non-functional properties. Accounting starts from per-component time and memory footprint worst-case bounds, automatically obtained through calls to state-of-the-art static analysis tools. Experiments show that our method produces efficient code for large-scale, real-life avionics applications

    Automatic Parallelization from Lustre Models in Avionics

    Get PDF
    International audienceThis poster presents ongoing research on automatic generation and execution of embedded parallel C code. We target safety-critical avionics programs specified in the synchronous language Lustre. The work described is part of the ITEA 3 project ASSUME (September 2015 - August 2018). ASSUME focuses mainly on embedded software engineering for multi-/many-core platforms. Both synthesis, e.g., automatic code generation, and verification, e.g., static analysis, of programs are addressed in the project. ASSUME is driven by the use cases of its industrial partners. One of these use cases consists in the parallelization of an avionics application comprising about 5500 Lustre nodes. After an overview of the ASSUME project, both parallel code generation and execution on a many-core platform will be presented and demonstrated

    Contributions à la parallélisation sûre et efficace de systèmes critiques temps-réel

    No full text
    The implementation of hard real-time systems involves a lot of steps that are traditionally manual. The growing complexity of such systems and hardware platforms on which they are executed makes increasingly difficult to ensure the correctness of those steps, in particular for the timing properties of the system on multi-core platform. This leads to the need for automation of the whole implementation process. In this thesis, we provide a method for automatic parallel implementation of real-time systems. The method bridge the gap between real-time systems implementation and compilation by integrating parallelization, scheduling, memory allocation, and code generation around a precise timing model and analysis that rely on strong hypothesis on the execution platform and the form of the generated code. The thesis also provides an implementation model for dataflow multithreaded software. Using the same formal ground as the first contribution, the dataflow synchronous formalisms, the model represents multithreaded implementations in a Lustre-like language extended with mapping annotations. This model allows formal reasoning on the correctness of all the mapping decisions used to build the implementation. We propose an approach toward the proof of correctness of the functionality of the implementation with respect to the functional specifications.L'implémentation de systèmes temps-réel implique de nombreuses étapes qui sont jusqu'aujourd'hui faites manuellement. La complexité de tels systèmes et celle des plateformes matérielles sur lesquelles ils s'exécutent rendent de plus en plus difficile d'assurer la correction de ces étapes de conception (en particulier dans de cadre d'exécutions sur plateformes multi-cœurs). Cela rend l'automatisation de tout le processus d'implémentation inévitable. Cette thèse propose une méthode de parallélisation automatique de systèmes temps-réel. La méthode rapproche les domaines du temps-réel et de la compilation en intégrant les étapes de parallélisation, d'ordonnancement, d'allocation mémoire et de génération de code autour d'une analyse et d'un modèle temporel précis qui s'appuient sur des hypothèses fortes sur la plateforme d'exécution et la forme du code généré. Cette thèse propose également un modèle d'implémentation pour du logiciel flot-de-données multithreadé. En utilisant la même base formelle que précédemment (les formalismes flot-de-données synchrones), un modèle représente une implémentation multithreadé dans un langage comme Lustre, étendu avec des annotations de mapping. Cette modélisation permet un raisonnement formel de toutes les décisions d'implémentation et nous proposons une approche vers la preuve de correction de leur fonctionnalité en rapport à leurs spécifications

    Brebis déguisées en loups : Modèles d’implémentation pour systèmes parallèles flots de données

    Get PDF
    Concurrent programming is notoriously difficult, especially in constrained embedded contexts. Threads, in particular, are wildly nondeterministic as a model of computation, and difficult to analyze in the general case. Fortunately, it is often the case that multi-threaded, semaphore-synchronized embedded software implements high-level functional specifications written in a deterministic data-flow language such as Scade or (safe subsets of) Simulink. We claim that in this case the implementation process should build not just the multi-threaded C code, but (first and foremost) a richer model exposing the dataflow organization of the computations performed by the implementation. From this model, the C code is extracted through selective pretty-printing, while knowledge of the data-flow organization facilitates analysis. We propose a language for describing such implementation models that expose the data-flow behavior (the sheep) hiding under the form of a multi-threaded program (the wolf). The language allows the representation of efficient implementations featuring pipelined scheduling and optimized memory allocation and synchronization. We show applicability on a large-scale industrial avionics case study and on a commercial many-core.La programmation concurrente est une discipline difficile, particulièrement dans un contexte de systèmes embarqués. Les threads, en particulier, sont un modèle de calcul non-déterministe et difficile à analyser dans le cas général. Heureusement, les logiciels embarquésmulti-threadés synchronisés par sémaphores sont souvent des implémentations de spécifications fonctionnelles de haut niveau écrites dans un langage flot-de-données déterministe comme Scade ou (un sous-ensemble sûr de) Simulink. Dans ce cas, le processus d’implémentation devrait, non seulement construire le code C multi-threadé de l’implémentation, mais avant tout un modèle plus riche exposant l’organisation du flot-de-données des calculs effectués par le code. De ce modèle, le code C peut être extrait par du simple pretty printing. En même temps, la structure flot-de-donnée facilite l’analyse. Nous proposons un langage pour la description de tels modèles d’implémentations qui exposent le comportement flot-de-donnée (la brebis) déguisé en un programme multi-threadé (le loup). Ce langage permet une représentation d’implémentations efficaces avec ordonnancement pipeliné et allocation mémoire et synchronisations optimisées. Nous montrons son application sur un cas d’étude de l’industrie aéronautique et sur une plateforme many-coeurs commercial

    Sheep in wolf's Clothing: Implementation Models for Dataflow Multi-Threaded Software

    Get PDF
    International audienceConcurrent programming is notoriously difficult, especially in constrained embeddedcontexts. Threads, in particular, are wildly nondeterministic as a model of computation, anddifficult to analyze in the general case. Fortunately, it is often the case that multi-threaded,semaphore-synchronized embedded software implements high-level functional specifications writtenin a deterministic data-flow language such as Scade or (safe subsets of) Simulink. We claim thatin this case the implementation process should build not just the multi-threaded C code, but (firstand foremost) a richer model exposing the dataflow organization of the computations performed bythe implementation. From this model, the C code is extracted through selective pretty-printing,while knowledge of the data-flow organization facilitates analysis. We propose a language fordescribing such implementation models that expose the data-flow behavior (the sheep) hidingunder the form of a multi-threaded program (the wolf). The language allows the representationof efficient implementations featuring pipelined scheduling and optimized memory allocation andsynchronization. We show applicability on a large-scale industrial avionics case study and on acommercial many-core.La programmation concurrente est une discipline difficile, particulièrement dansun contexte de systèmes embarqués. Les threads, en particulier, sont un modèle de calcul non-déterministe et difficile à analyser dans le cas général. Heureusement, les logiciels embarquésmulti-threadés synchronisés par sémaphores sont souvent des implémentations de spécificationsfonctionnelles de haut niveau écrites dans un langage flot-de-données déterministe comme Scadeou (un sous-ensemble sûr de) Simulink. Dans ce cas, le processus d’implémentation devrait, nonseulement construire le code C multi-threadé de l’implémentation, mais avant tout un modèleplus riche exposant l’organisation du flot-de-données des calculs effectués par le code. De cemodèle, le code C peut être extrait par du simplepretty printing. En même temps, la structureflot-de-donnée facilite l’analyse. Nous proposons un langage pour la description de tels mod-èles d’implémentations qui exposent le comportement flot-de-donnée (la brebis) déguisé en unprogramme multi-threadé (le loup). Ce langage permet une représentation d’implémentations ef-ficaces avec ordonnancement pipeliné et allocation mémoire et synchronisations optimisées. Nousmontrons son application sur un cas d’étude de l’industrie aéronautique et sur une plateformemany-coeurs commercial

    Correct-by-Construction Parallelization of Hard Real-Time Avionics Applications on Off-the-Shelf Predictable Hardware

    No full text
    International audienceWe present the first end-to-end modeling and compilation flow to parallelize hard real-time control applica-tions while fully guaranteeing the respect of real-time requirements on off-the-shelf hardware. It scales tothousands of dataflow nodes and has been validated on two production avionics applications. Unlike classicaloptimizing compilation, it takes as input non-functional requirements (real time, resource limits). To enforcethese requirements, the compiler follows a static resource allocation strategy, from coarse-grain tasks com-municating over an interconnection network all the way to individual variables and memory accesses. Itcontrols timing interferences resulting from mapping decisions in a precise, safe, and scalable wa
    corecore